給定一個由 Reverse Polish notation 組成的字符串,回傳其計算結果
這體可以使用 stack 來解,當遇到數字時,將數字 append 進 stack 中,當遇到 opreators 時,將 stack 中的數字 pop 兩個出來,要注意順序,最後 pop 出來的要擺在被 operate 的 位置。
依照 +, -, *, / 計算完後的結果放到 stack 中,以此類推直到結束
最後回傳 stack 內的數值即為所求
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
operators = set(["+", "-", "*", "/"])
s = deque()
for t in tokens:
if t not in operators:
num = int(t)
s.append(num)
else:
last = s.pop()
first = s.pop()
if t == "+":
result = first + last
elif t == "-":
result = first - last
elif t == "*":
result = first * last
else:
result = int(first / last)
s.append(result)
return s.pop()